package com.zhala.system.service;

import com.zhala.common.core.domain.CommonResult;
import com.zhala.system.domain.ZlSteelBigPipe;
import com.zhala.system.domain.vo.*;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 管接大组Service接口
 *
 * @author ruoyi
 * @date 2024-11-11
 */
public interface IZlSteelBigPipeService {
    CommonResult<Boolean> rollBack(PipeRollBackReqVO reqVO);
    /**
     * 查询管接大组
     *
     * @param CREATOR 管接大组主键
     * @return 管接大组
     */
    public ZlSteelBigPipe selectZlSteelBigPipeByCREATOR(String CREATOR);

    /**
     * 查询管接大组列表
     *
     * @param zlSteelBigPipe 管接大组
     * @return 管接大组集合
     */
    public List<ZlSteelBigPipe> selectZlSteelBigPipeList(ZlSteelBigPipe zlSteelBigPipe);

    /**
     * 新增管接大组
     *
     * @param zlSteelBigPipe 管接大组
     * @return 结果
     */
    public int insertZlSteelBigPipe(ZlSteelBigPipe zlSteelBigPipe);

    /**
     * 修改管接大组
     *
     * @param zlSteelBigPipe 管接大组
     * @return 结果
     */
    public int updateZlSteelBigPipe(ZlSteelBigPipe zlSteelBigPipe);

    /**
     * 批量删除管接大组
     *
     * @param CREATORs 需要删除的管接大组主键集合
     * @return 结果
     */
    public int deleteZlSteelBigPipeByCREATORs(String[] CREATORs);

    /**
     * 删除管接大组信息
     *
     * @param CREATOR 管接大组主键
     * @return 结果
     */
    public int deleteZlSteelBigPipeByCREATOR(String CREATOR);

    /**
     * 管节大组
     * 该方法负责将用户提交的钢管设置请求信息持久化到数据库中
     * 使用了事务注解，确保数据库操作的原子性
     *
     * @param reqVO 钢管设置请求对象，包含了用户提交的设置信息
     * @return 返回一个通用结果对象，表示设置操作是否成功
     */
   CommonResult<Boolean> settingsUpdate(SteelBigPipeReqVO reqVO);
    /**
     * 管节大组
     * 该方法负责将用户提交的钢管设置请求信息持久化到数据库中
     * 使用了事务注解，确保数据库操作的原子性
     *
     * @param reqVO 钢管设置请求对象，包含了用户提交的设置信息
     * @return 返回一个通用结果对象，表示设置操作是否成功
     */
    CommonResult<Boolean> settings(SteelBigPipeReqVO reqVO);

    /**
     * 执行环焊缝焊接操作
     *
     * 此方法负责处理环焊缝焊接的请求，更新数据库中的相关信息，并记录操作者和操作时间
     *
     * @param reqVO 环焊缝焊接请求对象，包含焊接用户的ID、焊接开始和结束时间等信息
     * @return 返回一个CommonResult对象，包含操作结果的布尔值，true表示成功
     */
    CommonResult<Boolean> girthWeld(SteelBigPipeGirtWeldReqVO reqVO,Boolean isUpdate);


    /**
     * 处管节调圆
     *
     * @param reqVO 请求对象，包含大管道环向焊接的相关信息
     * @return 返回一个通用结果对象，表示操作是否成功
     */
    CommonResult<Boolean> pipeCircular(BigPipeCircularReqVO reqVO);

    /**
     * 加固环形件处理
     *
     * 此方法用于处理大口径管道的加固环形件请求它首先验证请求的合法性，
     * 然后更新数据库中的相关记录，并返回处理结果
     *
     * @param reqVO 请求视图对象，包含加固环形件所需的参数
     * @return 返回一个CommonResult对象，包含处理结果的布尔值
     */
    CommonResult<Boolean> stiffenRing(BigPipeStiffenRingReqVO reqVO);

    /**
     * 加固环焊缝处理方法
     * 该方法用于更新大口径钢管的加固环焊缝相关信息，包括结束时间和操作用户
     *
     * @param reqVO 包含加固环焊缝操作请求数据的对象
     * @return 返回一个通用结果对象，包含操作是否成功的布尔值
     */
    CommonResult<Boolean> stiffenRingWeld(BigPipeStiffenRingWeldReqVO reqVO);

    /**
     * 处理验收操作
     * 此方法接收一个BigPipeAcceptanceReqVO对象作为请求参数，验证并更新数据库中的验收信息
     * 它首先验证请求的合法性，然后将请求数据复制到数据库模型中，
     * 设置验收处理用户和时间，最后更新数据库记录并返回成功结果
     *
     * @param reqVO 验收请求对象，包含验收所需的信息
     * @return 返回一个CommonResult对象，包含操作结果的布尔值
     */
    CommonResult<Boolean> acceptance(BigPipeAcceptanceReqVO reqVO);


    /**
     * 执行大管验收处理
     * 此方法首先验证请求的合法性，然后更新数据库中的相应记录，以表示验收处理的过程和结果
     *
     * @param reqVO 包含验收处理请求信息的对象
     * @return 返回一个CommonResult对象，包含操作是否成功的布尔值
     */
    CommonResult<Boolean> antisepsis(BigPipeAntisepsisReqVO reqVO,Boolean isUpdate);

    /**
     * 处理废品操作
     *
     * @param reqVO 废品操作的请求对象，包含废品操作的相关信息
     * @return 返回一个CommonResult对象，包含操作结果的布尔值
     */
    CommonResult<Boolean> scrap(PipeScrapReqVO reqVO);
    /**
     * 获取大口径钢管的信息
     *
     * @param id 钢管的唯一标识符
     * @param type 钢管的类型
     * @return 包含大口径钢管信息的CommonResult对象
     */
    CommonResult<SteelBigPipeRespVO> info(String id, Integer type);
}
